/*
背景：两个人每人发3张牌（各从一副牌中），每张牌包括花色（红桃(Heart)>黑桃(Spade)>方块(Diamond)>梅花(Club））和大小（从小到大依次是：2-10、J、Q、K、A），谁手上有最大的一张或多张（如果有相同的牌）牌谁获胜。

输入：A的3张牌（未排序）和B的3张牌（未排序）。（参见用例）

输出：A的3张牌的排序后的输出和B的3张牌的排序后的输出，以及A和B谁获胜。（参见用例）
*/

/*
测试用例1:
输入：
DA H2 C3
H4 H3 DJ
输出：
Winner is B!↵
A: H2 DA C3↵
B: H4 H3 DJ↵

测试用例2:
输入：
HA CA CB
HQ CJ CQ
输出：
Input Error!↵

测试用例3:
输入：
HA CA CJ
DA DK DK
输出：
Input Error!↵

测试用例4:
输入：
SA SJ SK
SA SJ SK
输出：
Winner is X!↵
A: SA SK SJ↵
B: SA SK SJ↵
*/

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <map>
using namespace std;

// 数字价值表
map<char, int> num_value = {
	{'2', 2},
	{'3', 3},
	{'4', 4},
	{'5', 5},
	{'6', 6},
	{'7', 7},
	{'8', 8},
	{'9', 9},
	{'1', 10},
	{'J', 11},
	{'Q', 12},
	{'K', 13},
	{'A', 14},
};

// 花色价值表
map<char, int> color_value = {
	{'C', 1}, // 梅花
	{'D', 2}, // 方块
	{'S', 3}, // 黑桃
	{'H', 4}, // 红桃
};

// 记录输入是否正确
bool Flag = true;

// 计算牌面大小
int calculate_value(const string &str)
{
	int num = 0;
	
	// 判断数字、花色是否正确
	if (num_value.count(str[1]) == 0 || color_value.count(str[0]) == 0)
	{
		Flag = false;
		return -1;
	}
	if (str.size() == 3)
	{
		if (str[1] != '1' || str[2] != '0')
		{
			Flag = false;
			return -1;
		}
	}
	
	return num_value[str[1]] + 100 * color_value[str[0]];
}

// 排序函数
bool sort_algorithm(const string &str1, const string &str2)
{
	int num1 = calculate_value(str1);
	int num2 = calculate_value(str2);
	
	// 两张牌相同
	if (num1 == num2)
		Flag = false;
		
	return num1 > num2;
}

int main(int argc, char *argv[]) {
	
	// 接收A
	vector<string> A;
	for (int i=0; i < 3; i++)
	{
		string t;
		cin >> t;
		A.push_back(t);
	}
	
	// 接收B
	vector<string> B;
	for (int i=0; i < 3; i++)
	{
		string t;
		cin >> t;
		B.push_back(t);
	}
	
	// 排序
	sort(A.begin(), A.end(), sort_algorithm);
	sort(B.begin(), B.end(), sort_algorithm);
	
	// 输入不符合要求
	if (!Flag)
	{
		cout << "Input Error!" << endl;
		return 0;
	}
	
	// 打印比较结果
	int value_A_max = calculate_value(A[0]);
	int value_B_max = calculate_value(B[0]);
	
	if (value_A_max > value_B_max)
	{
		cout << "Winner is A!" << endl;
	}
	else if (value_A_max < value_B_max)
	{
		cout << "Winner is B!" << endl;
	}
	else 
	{
		cout << "Winner is X!" << endl;
	}
	
	// 打印排序结果
	cout << "A:";
	for (int i=0; i < A.size(); i++)
	{
		cout << " " << A[i];
	}
	cout << endl;
	
	cout << "B:";
	for (int i=0; i < B.size(); i++)
	{
		cout << " " << B[i];
	}
	cout << endl;
}